/**
 * 
 */
package info.pello.games.libgdx.pong;

import com.badlogic.gdx.audio.Sound;



/**
 * World
 * @author Pello Xabier
 * Clase que representa el mundo del juego. Un mundo compuesto
 * por paredes laterales, una pala en la parte de abajo y una pared
 * en la parte de arriba. Y una pelotilla que va y viene.
 */
public class World {

	private Pelota pelota;
	private Pala pala;
	private Pala pala2;
	
	private  Sound Wall;
	private  Sound Wall2;
	private  Sound GameOver;
	
	
	private PongGame testeo;
	
	
	
	
	

	public World(){
		initialize();
	}
	
	private void initialize () {
		pelota = new Pelota();
		pala = new Pala(0,0);
		pala2 = new Pala(4,14.5f);		
	}


	/**
	 * update
	 * updates world status
	 * @param delta
	 */
	public void update () {
		
		pelota.posicion.add(pelota.direccion.x*0.05f, pelota.direccion.y*0.05f, 0);

		// Toca la pala de abajo y va hacia arriba
		if (pelota.posicion.x > pala.posicion.x && pelota.posicion.x <= pala.posicion.x + 3 && pelota.posicion.y <= 1 && pelota.posicion.y > 0) {
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Palazo : pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
		} 
		
		// Toca la pala de arriba	y la pelota vuelve para abajo
		if (pelota.posicion.x > pala2.posicion.x && pelota.posicion.x <= pala2.posicion.x + 3 && pelota.posicion.y >= 14 && pelota.posicion.y < 15) {
			pelota.direccion.y = -pelota.velocidad;
			System.out.println("Palazo : pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
		}
		
		//Choca en pared de la izquierda
		if (pelota.posicion.x < 0) {
			pelota.direccion.x = pelota.velocidad;
			//testeo.getSoundByName("wall").play();
			System.out.println("Choque izq pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
		}

		// Choca pared derecha y va hacia la izquierda 
		if (pelota.posicion.x > 10) {
			pelota.direccion.x = -pelota.velocidad;
			//testeo.getSoundByName("wall2").play();
			System.out.println("Choque dcha pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
		}
		
		if (pelota.posicion.y < 0) {
			//testeo.getSoundByName("fail").play();
			pelota.posicion.x = 5;
			pelota.posicion.y = 5;
			pelota.direccion.x = pelota.velocidad;
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Cayó pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
		}
		
		if (pelota.posicion.y > 15) {
			//testeo.getSoundByName("fail").play();
			pelota.posicion.x = 5;
			pelota.posicion.y = 5;
			pelota.direccion.x = pelota.velocidad;
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Cayó pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
		}


	}

	/**
	 * @return the pelota
	 */
	public Pelota getPelota() {
		return pelota;
	}

	/**
	 * @param pelota the pelota to set
	 */
	public void setPelota(Pelota pelota) {
		this.pelota = pelota;
	}

	/**
	 * @return the pala
	 */
	public Pala getPala() {
		return pala;
	}

	/**
	 * @param pala the pala to set
	 */
	public void setPala(Pala pala) {
		this.pala = pala;
	}

	/**
	 * @return the pala2
	 */
	public Pala getPala2() {
		return pala2;
	}

	/**
	 * @param pala2 the pala2 to set
	 */
	public void setPala2(Pala pala2) {
		this.pala2 = pala2;
	}
	
	/**
	 * @return the wall
	 */
	public Sound getWall() {
		return Wall;
	}

	/**
	 * @param wall the wall to set
	 */
	public void setWall(Sound wall) {
		Wall = wall;
	}

	/**
	 * @return the wall2
	 */
	public Sound getWall2() {
		return Wall2;
	}

	/**
	 * @param wall2 the wall2 to set
	 */
	public void setWall2(Sound wall2) {
		Wall2 = wall2;
	}

	/**
	 * @return the gameOver
	 */
	public Sound getGameOver() {
		return GameOver;
	}

	/**
	 * @param gameOver the gameOver to set
	 */
	public void setGameOver(Sound gameOver) {
		GameOver = gameOver;
	}
	
	
	
}
